package com.kitten.count.domain.mapper;

import com.kitten.count.domain.dataobject.UserCountDO;
import org.apache.ibatis.annotations.Param;

public interface UserCountDOMapper {
    int deleteByPrimaryKey(Long id);

    int insert(UserCountDO record);

    int insertSelective(UserCountDO record);

    UserCountDO selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(UserCountDO record);

    int updateByPrimaryKey(UserCountDO record);

    /**
     * 插入或更新粉丝总数
     * @return
     */
    int insertOrUpdateFansTotalByUserId(@Param("userId") Long userId, @Param("count") Integer count);
    /**
     * 插入或更新关注总数
     * @return
     */
    int insertOrUpdateFollowTotalByUserId(@Param("userId") Long userId, @Param("count") Integer count);

    /**
     * 插入或更新用户被点赞总数
     * @param userId
     * @param count
     */
    void insertOrUpdateLikeTotalByUserId(@Param("creatorId") Long userId, @Param("count") Integer count);

    /**
     * 插入或更新用户被收藏总数
     * @param creatorId
     * @param count
     */
    void insertOrUpdateCollectTotalByUserId(@Param("creatorId") Long creatorId, @Param("count") Integer count);

    /**
     * 插入或更新用户的笔记总数
     * @param creatorId
     * @param count
     */
    void insertOrUpdateNoteTotalByUserId(@Param("creatorId") Long creatorId, @Param("count") int count);

    /**
     * 根据用户 ID 查询
     * @param userId
     * @return
     */
    UserCountDO selectByUserId(Long userId);

}